一元二次、一元三次、一元四次方程的求根公式

您所在的位置:网站首页 三次方程 求根 一元二次、一元三次、一元四次方程的求根公式

一元二次、一元三次、一元四次方程的求根公式

2023-04-12 15:09| 来源: 网络整理| 查看: 265

代码用python写的。

一元二次方程:

def Quadratic(args): a,b,c=args D = cmath.sqrt(b**2-4*a*c) x1 = (-b+D)/(2*a) x2 = (-b-D)/(2*a) roots = [x1,x2] return roots

一元三次方程:

 

 

def Cubic(args): a,b,c,d = args p = c/a-b**2/(3*a**2) q = d/a+2*b**3/(27*a**3)-b*c/(3*a**2) w = complex(-0.5,(3**0.5)/2) ww = complex(-0.5,-(3**0.5)/2) A = cmath.sqrt((q/2)**2+(p/3)**3) B = ThreeSquare(-q/2+A) C = ThreeSquare(-q/2-A) y1 = B+C y2 = w*B+ww*C y3 = ww*B+w*C D = b/(3*a) roots=[RoundAns(y1-D,6),RoundAns(y2-D,6),RoundAns(y3-D,6)] return roots

一元四次方程:

 

 

for k=0,1,2,计算m

 如果三个m的值都为0,则

 否则的话,取|m|最大的那个k,并计算

 

def Quartic(args): a,b,c,d,e = args P = (c**2+12*a*e-3*b*d)/9 Q = (27*a*d**2+2*c**3+27*b**2*e-72*a*c*e-9*b*c*d)/54 D = cmath.sqrt(Q**2-P**3) u = ThreeSquare(Q+D) if abs(Q+D)>=abs(Q-D) else ThreeSquare(Q-D) v = 0 if u==0 else P/u w = complex(-0.5,3**0.5/2) m = [] M = [] flag = 0 roots = [] for i in range(3): x = cmath.sqrt(b**2-8*a*c/3+4*a*(w**i*u+w**(3-i)*v)) m.append(x) M.append(abs(x)) if m == 0: flag=flag+1 if flag == 3: mm = 0 S = b**2-8*a*c/3 T = 0 else: t = M.index(max(M)) mm = m[t] S = 2*b**2-16*a*c/3-4*a*(w**t*u+w**(3-t)*v) T = (8*a*b*c-16*a**2*d-2*b**3)/mm x1=(-b-mm+cmath.sqrt(S-T))/(4*a) x2=(-b-mm-cmath.sqrt(S-T))/(4*a) x3=(-b+mm+cmath.sqrt(S+T))/(4*a) x4=(-b+mm-cmath.sqrt(S+T))/(4*a) roots.append(x1) roots.append(x2) roots.append(x3) roots.append(x4) return roots

完整代码见:

https://github.com/Larissa1990/Solve-cubic-and-quartic-equations-with-one-unknown/blob/master/README.md

 

补充内容:

1.一元三次方程的求根公式的推导过程

标准的一元三次方程如式1所示

$ ax^3+bx^2+cx+d=0$ (1)

令$y=x-\frac{b}{3a}$,则可以将式1变换成如式2所示的缺项形式

$y^3+py+q=0$ (2)

其中,$p=\frac{c}{a}-\frac{b^2}{3a^2}$, $q=\frac{d}{a}+\frac{2b^3}{27a^3}-\frac{bc}{3a^2}$。式2具有两个自由度,因此猜测方程一个根的形式如式3所示

$y=\sqrt[3]{u}+\sqrt[3]{v}$ (3)

令,$A=\sqrt[3]{u}$,$B=\sqrt[3]{v}$,则将该根带入式2可得

$A^3+B^3+3AB(A+B)+p(A+B)+q=0$ (4)

进而转换为如下方程组

$\left\{\begin{matrix} p=-3AB \\ q=-(A^3+B^3) \end{matrix}\right.$

根据这个方程组求A,B的时候,会得到一个以$A^3$或者$B^3$为变量的一元二次方程,进而可以得到A,B的值如式5所示

$A,B=\sqrt[3]{\pm \sqrt{(\frac{q}{2})^2+(\frac{p}{3})^3}-\frac{q}{2}}$ (5)

因此,得到了式2的一个根,如式6所示

$y_{1}=\sqrt[3]{\sqrt{(\frac{q}{2})^2+(\frac{p}{3})^3}-\frac{q}{2}}+\sqrt[3]{-\sqrt{(\frac{q}{2})^2+(\frac{p}{3})^3}-\frac{q}{2}}$ (6)

我们知道,式2也可以写成的形式$(y-y_{1})(y^2+Ey+F)=0$,那么已经求出了$y_{1}$,剩下两个根只需要解一个一元二次方程就可以了。求出了式2的三个根,再根据$y=x-\frac{b}{3a}$变换回去,就得到了一元三次方程标准形式的根。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3